Skip to content

Make Windows build jobs non-blocking (continue-on-error + warning aggregator)#2696

Merged
tido64 merged 3 commits intotrunkfrom
copilot/update-windows-build-jobs
Mar 10, 2026
Merged

Make Windows build jobs non-blocking (continue-on-error + warning aggregator)#2696
tido64 merged 3 commits intotrunkfrom
copilot/update-windows-build-jobs

Conversation

Copy link
Contributor

Copilot AI commented Mar 9, 2026

Windows CI jobs are flaky due to infrastructure issues outside our control, causing them to block the release job unnecessarily.

Changes

  • windows / windows-template jobs: Added continue-on-error: true so failures show as ⚠️ instead of ❌ and don't block downstream jobs.
  • New windows-result aggregator job: Runs on Ubuntu after both Windows jobs complete (regardless of outcome). Emits a ::warning:: annotation surfacing any failure in the PR annotations panel without failing the pipeline.
  • release job needs:: Replaced direct deps on windows and windows-template with windows-result, which always exits successfully on its own.
windows-result:
  name: "Windows [result]"
  needs:
    - windows
    - windows-template
  steps:
    - name: Warn if Windows builds failed
      if: ${{ contains(needs.*.result, 'failure') }}
      run: |
        echo "::warning::One or more Windows build jobs failed. This is non-blocking but should be investigated."

Platforms affected

  • Android
  • iOS
  • macOS
  • visionOS
  • Windows

Test plan

Verify in CI that a Windows build failure no longer blocks the release job, and that the windows-result job emits a visible warning annotation in the PR.

Original prompt

Background

The CI build tasks that build the Windows app are flaky through no fault of our own. Currently, the windows and windows-template jobs are hard dependencies of the release job, meaning if they fail, the entire pipeline is blocked.

Goal

Make the Windows build jobs optional (non-blocking) but still surface as a visible warning when they fail.

Changes required in .github/workflows/build.yml

1. Add continue-on-error: true to the windows job

  windows:
    name: "Windows"
    permissions: {}
    runs-on: windows-2025
    continue-on-error: true          # ← ADD THIS
    if: ${{ github.event_name != 'schedule' }}

2. Add continue-on-error: true to the windows-template job

  windows-template:
    name: "Windows [template]"
    permissions: {}
    runs-on: windows-2025
    continue-on-error: true          # ← ADD THIS
    if: ${{ github.event_name != 'schedule' }}

3. Add a new windows-result aggregator job

Insert this new job after windows-template and before release. It runs after both Windows jobs complete (regardless of outcome) and emits a ::warning:: annotation if either failed:

  windows-result:
    name: "Windows [result]"
    permissions: {}
    runs-on: ubuntu-24.04
    if: ${{ github.event_name != 'schedule' }}
    needs:
      - windows
      - windows-template
    steps:
      - name: Warn if Windows builds failed
        if: ${{ contains(needs.*.result, 'failure') }}
        run: |
          echo "::warning::One or more Windows build jobs failed. This is non-blocking but should be investigated."
          echo "windows result: ${{ needs.windows.result }}"
          echo "windows-template result: ${{ needs.windows-template.result }}"

4. Update the release job's needs: list

Replace the direct dependencies on windows and windows-template with the new windows-result aggregator job:

  release:
    needs:
      - review
      - ios
      - ios-template
      - android
      - android-template
      - macos
      - macos-template
      - windows-result          # ← replaces `windows` and `windows-template`

Expected outcome

  • Both Windows jobs can fail without blocking the CI pipeline (shown as ⚠️ in the GitHub UI instead of ❌)
  • The ::warning:: annotation in windows-result surfaces the failure prominently in the PR annotations panel
  • The release job waits for windows-result (which always succeeds on its own) and is no longer blocked by Windows flakiness
  • All non-Windows jobs are completely unaffected

This pull request was created from Copilot chat.


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copilot AI changed the title [WIP] Make Windows build jobs optional and non-blocking Make Windows build jobs non-blocking (continue-on-error + warning aggregator) Mar 9, 2026
@github-actions github-actions bot added platform: Android This affects Android platform: iOS This affects iOS platform: macOS This affects macOS platform: Windows This affects Windows platform: visionOS labels Mar 9, 2026
@tido64 tido64 force-pushed the copilot/update-windows-build-jobs branch 8 times, most recently from 578b9ba to f02f328 Compare March 10, 2026 10:23
@tido64 tido64 force-pushed the copilot/update-windows-build-jobs branch from f02f328 to f9815b9 Compare March 10, 2026 10:41
@tido64
Copy link
Member

tido64 commented Mar 10, 2026

GitHub Actions does not support:

  • Outputs from jobs using matrix strategy (hence the artifact workaround)
  • Warning state (a job is either green or red)

This is currently the best we can do.

image

@tido64 tido64 marked this pull request as ready for review March 10, 2026 10:57
@tido64 tido64 requested review from JasonVMo and tido64 as code owners March 10, 2026 10:57
@tido64 tido64 enabled auto-merge (squash) March 10, 2026 10:58
@tido64 tido64 merged commit 171c5bd into trunk Mar 10, 2026
29 of 30 checks passed
@tido64 tido64 deleted the copilot/update-windows-build-jobs branch March 10, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform: Android This affects Android platform: iOS This affects iOS platform: macOS This affects macOS platform: visionOS platform: Windows This affects Windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants